Reports for WPF
Microsoft Access レポートのインポート
C1Report デザイナの使い方 > C1Report デザイナについて > Microsoft Access レポートのインポート

C1Report デザイナの最も強力な機能の1つは、Microsoft Access を使って作成されたレポートをインポートできることです。*.mdb ファイルのほかにも、Access 2007 の *.accdb ファイルにも対応しています。この機能を使用するには、Microsoft Access がコンピュータにインストールされている必要があります。ただし、レポートをデザイナにインポートしてしまえば、Microsoft Access は必要なくなります。

Access ファイルからレポートをインポートするには、[インポート]ボタンをクリックするか、[ファイル|インポート]メニューを選択します。ダイアログボックスが表示され、インポートするファイルの名前の入力を求められます。

デザイナは自動的にファイルをスキャンし、インポートするファイルを選択できるダイアログを表示します。

ダイアログでは、インポート処理を行う前に既存のすべてのレポート定義をクリアするかどうか指定できます。

インポート処理が正しく動作すると、ソースレポートのほとんどの要素が処理されます。ただし、次に挙げるいくつかの例外があります。

上のような制限を受けるレポートは比較的少ないですが、レポートをインポートしたら、すべてのレポートをプレビューし、正しく動作するかどうかを確認してください。

デザイナが実際に行う処理の一例として、製品に付属の NWind.mdb ファイルをインポートしてみます。このファイルには、次に示す13のレポートが含まれています。そこで、これらのレポートに対する処理について説明します。C1Reports に付属する NWind.XML ファイルには、以下で説明する変更がすべて行われています。

  1. Alphabetical List of Products(製品のアルファベット順リスト)

    処理は不要です。

  2. Catalog(カタログ)

    処理は不要です。

  3. Customer Labels(顧客ラベル)

    処理は不要です。

  4. Employee Sales by Country(地域別従業員売上高)

    このレポートには、手作業で変換する必要があるコードが含まれます。次のコードを Group 1 のヘッダセクションのOnPrint プロパティに割り当てます。

    コードのコピー
    If SalespersonTotal > 5000 Then
    ExceededGoalLabel.Visible = True
    SalespersonLine.Visible = True
    Else
    ExceededGoalLabel.Visible = False
    SalespersonLine.Visible = False
    End If
    
  5. Invoice(請求書)

    処理は不要です。

  6. Products by Category(カテゴリ別製品)

    処理は不要です。

  7. Sales by Category(カテゴリ別売上高)

    このレポートには、インポートされないグラフコントロールが含まれます。グラフをレポートに追加するには、アンバウンドピクチャフィールドを使用します。イベントハンドラを記述してグラフを作成し、それを画像としてアンバウンドピクチャフィールドに割り当てます。

  8. Sales by Category Subreport(カテゴリ別売上高サブレポート)

    処理は不要です。

  9. Sales by Year(年度別売上高)

    このレポートには、手作業で変換する必要があるコードおよび Form オブジェクトへの参照が含まれます。Form オブジェクトを置き換えるには、RecordSource プロパティを編集して [Show Details] パラメータを追加します。

    コードのコピー
    PARAMETERS [Beginning Date] DateTime 1/1/1994,
    [Ending Date] DateTime 1/1/2001,
    [Show Details] Boolean False; ...
    
    レポートのOnOpen プロパティで新しいパラメータを使用します。
    コードのコピー
    Report.OnOpen = "b = [Show Details]" & vbCrLf & _
    " Detail.Visible = b" & vbCrLf & _
    " [Group 0 Footer].Visible = b" & vbCrLf & _
    " DetailsLabel.Visible = b" & vbCrLf & _
    " LineNumberLabel2.Visible = b" & vbCrLf & _
    " Line15.Visible = b" & vbCrLf & _
    " SalesLabel2.Visible = b" & vbCrLf & _
    " OrdersShippedLabel2.Visible = b" & vbCrLf & _
    " ShippedDateLabel2.Visible = b" & vbCrLf & _
    " Line10.Visible = b"
    
    コードのコピー
    Report.OnOpen = "b = [Show Details]\r\n" +
    " Detail.Visible = b\r\n" +
    " [Group 0 Footer].Visible = b\r\n" +
    " DetailsLabel.Visible = b\r\n" +
    " LineNumberLabel2.Visible = b\r\n" +
    " Line15.Visible = b\r\n" +
    " SalesLabel2.Visible = b\r\n" +
    " OrdersShippedLabel2.Visible = b\r\n" +
    " ShippedDateLabel2.Visible = b\r\n" +
    " Line10.Visible = b";
    

    最後に、2行のコードを書き換える必要があります。

    コードのコピー
    Sections ("Detail").OnPrint = _
    "PageHeader.Visible = True"
    Sections("Group 0 Footer).OnPrint = _
    "PageHeader.Visible = False"
    
    コードのコピー
    Sections["Detail"].OnPrint =
    "PageHeader.Visible = true";
    Sections["Group 0 Footer].OnPrint =
    "PageHeader.Visible = false";
    
  10. Sales by Year Subreport(年度別売上高サブレポート)

    処理は不要です。

  11. Sales Totals by Amount(金額別総売上高)

    このレポートには、手作業で変換する必要があるコードが含まれます。次のコードをページヘッダセクションのOnPrint プロパティに割り当てます。

    コードのコピー
    PageTotal = 0
    
    次のコードを詳細セクションのOnPrint プロパティに割り当てる必要があります。

    コードのコピー
    PageTotal = PageTotal + SaleAmount
    HiddenPageBreak.Visible = (Counter = 10)
    
  12. Summary of Sales by Quarter(四半期別売上高のサマリー)

    このレポートには、四半期順にソートされるグループがあります(前述の4番目の例外を参照)。これを解決するには、RecordSource プロパティを次のように変更することによって、ShippedDate 四半期の値を含むフィールドをソースデータセットに追加します。

    コードのコピー
    SELECT DISTINCTROW Orders.ShippedDate,
    Orders.OrderID,
    [Order Subtotals].Subtotal,
    DatePart("q",Orders.ShippedDate) As ShippedQuarter
    FROM Orders INNER JOIN [Order Subtotals]
    ON Orders.OrderID = [Order Subtotals].OrderID
    WHERE (((Orders.ShippedDate) Is Not Null));
    
    新しいフィールド ShippedQuarter を使用するように、グループのGroupBy プロパティを変更します。
  13. Summary of Sales by Year(年度別売上高のサマリー)
    処理は不要です。

以上をまとめると、NorthWind データベースからインポートされる 13 のレポートのうち、編集の必要がないレポートが8つ、コードを変換する必要があるレポートが3つ、SQL 文を変更する必要があるレポートが1つ、置き換えられないグラフコントロールがあるレポートが1つあるということになりますが、それでも編集に必要な手間はわずかです。インポート機能を使用すれば既存レポートの移行がいかに簡単かお分かりいただけたことと思います。

関連トピック